// 生成虚拟节点
import vnode from "./vnode";

// h('div',{},'文字')
// h('div',{},h())
// h('div',{},[])

// 编写一个低配版的h函数，这个函数必须接受三个参数，缺一不可
export default function (sel,data,c){
    if(arguments.length!==3){
        throw new Error('对不起，h函数必须传入三个参数，我们是低配版h的函数')
    }
    if(typeof c === 'string' || typeof c === 'number'){
        return vnode(sel,data,undefined,c,undefined)
    }else if(Array.isArray(c)){
        let children = []
        for (let i = 0;i<c.length;i++){
            if(!(typeof c[i] === 'object'&&c[i].hasOwnProperty('sel'))){
                throw new Error('传入的数组参数中有项不是h函数')
            }
            children.push(c[i])
        }
        return vnode(sel,data,children,undefined,undefined)
    }else if(typeof c === 'object' && c.hasOwnProperty('sel')){
        return vnode(sel,data,[c],undefined,undefined)
    }

}
